package org.example.demo3.demos.web.domain.query;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.example.demo3.demos.web.entity.User;

@Data
@ApiModel(description = "分页查询实体") // 统一分页条件,其他业务去继承就可以使用了.
public class PageQuery2 {
    @ApiModelProperty("分页")
    private Integer PageNo = 1;

    @ApiModelProperty("分页大小")
    private Integer PageSize = 5;

    @ApiModelProperty("排序字段")
    private String sortBy;

    @ApiModelProperty("排序正序或者倒叙")
    private Boolean isAsc = true;

    public  <T> Page<T>  toMpPage(OrderItem ...items){ // 多个参数都放在一个变量上
        Page<T> page = new Page<>(PageNo, PageSize); // 传递给mp的分页参数,并且根据传入类型来进行限制
        if(StrUtil.isNotBlank(sortBy)){ // 如果是有参数,不为空
            page.addOrder(new OrderItem(sortBy,isAsc)); // 给page指定分页参数
        }else if(items != null){ // 如果没有值, 那就按照这个值直接执行
            page.addOrder(items);
        }
        return page;
    }
    // static静态方法属于方法,而不是实力.  所以直接使用类名调用即可
    public  <T> Page<T> toMpPageDefaultUpdateTime(){
        return  toMpPage(new OrderItem("update_time",false));
    }
//
//    private User toMpPage(OrderItem ...items){ // 多个参数都放在一个变量上
//        User user = new User();
//        user.setId("111");
//        return user;
//    }


}
